package com.yx.changdao.web.config.quartz;

import com.yx.changdao.web.template.QuartzJob;
import org.quartz.*;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

/**
 * @Description: <br/>
 * Quartz定时任务配置类
 * <p>
 * <br/>
 * @Auther: zhangqi
 * @create 2019/11/20 16:31
 */
@Configuration
public class QuartzConfig {

    /**
     * cron表达式
     */
    @Autowired
    private QuratzCronConfig quratzCronConfig;

    /**
     * 构建定时任务
     *
     * @return
     */
    @Bean
    public JobDetail quartzJob() {
        // 业务类
        return JobBuilder.newJob(QuartzJob.class)
                // 可以给该JobDetail起一个id
//                .withIdentity("DateTimeJob")
                // 每个JobDetail内都有一个Map，包含了关联到这个Job的数据，在Job类中可以通过context获取
                // 关联键值对
//              .usingJobData("msg", "Hello Quartz")
                // 即使没有Trigger关联时，也不需要删除该JobDetail
                .storeDurably()
                .build();
    }

    /**
     * 执行定时任务
     *
     * @return
     */
    @Bean
    public Trigger quartzJobTrigger() {
        return TriggerBuilder.newTrigger()
                // 关联上述的JobDetail
                .forJob(quartzJob())
                // 给Trigger起个名字
//                .withIdentity("quartzTaskService")
                // 设置cron 表达式
                .withSchedule(CronScheduleBuilder.cronSchedule(quratzCronConfig.getCrons().get(QuartzJob.class.getName())))
                .build();
    }


}


